package proto

type Signal interface {
	// OnConnect 客户端连接回调,阻塞
	OnConnect(cb SignalCallback)
	// OnAuth 客户端认证,返回true代表通过,阻塞
	// connect后执行
	OnAuth(callback AuthCallback)
	// OnClose 连接断开回调
	OnClose(cb SignalCallback)
	// Run 运行signal server
	Run() error
}

type Session interface {
	// ID 获取SessionId
	ID() string
	// On 自定义事件回调
	On(header string, cb SessionCallback)
	// Emit 发送消息
	Emit(header string, body string) error
	// Close 关闭连接
	Close()
}

type SignalCallback func(session Session)

type SessionCallback func(cbStruct SessionCbStruct)

type SessionCbStruct struct {
	Session   Session
	MsgStruct *MsgStruct
	SessionId string
	Msg       string
}

type AuthCallback func(cbStruct AuthCbStruct) bool

type AuthCbStruct struct {
	// /path
	Path string
	// http://example.com
	Origin string
}
